#ifndef _KALMANFILTER_H_
#define _KALMANFILTER_H_

#include "Kalmanfilter.h"
#include "main.h"
#include "adc.h"
#include "dma.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
#include "stdio.h"
/********ʹ���ĸ���ʱ���޸ĳɶ�Ӧ�Ķ�ʱ��*************/
#define DT35_TIM htim3
/********ʹ��ADC�޸ĳɶ�Ӧ��ADC********************************************/
#define DT35_ADC &hadc1
/**
*ʹ��˵��:
*1��cubemx�����ú�ADC�Ͷ�ʱ�
*2���������е���DT35_Init
*3�ڶ�ʱ���ص��е�DT35_ADCCallback��DT35_TIMCallback
*4 extern float DT35_distance[2];����������ֵ����DT35���������ֵ
*
*/
//DT35�ĳ�ʼ��
void DT35_Init();
//ADC�ĳ�ʼ��������ص�������hadc�ĵ�ַ
void DT35_ADCCallback(ADC_HandleTypeDef * hadc);
//��ʱ���ĳ�ʼ��������ص������붨ʱ���ĵ�ַ
void DT35_TIMCallback(TIM_HandleTypeDef *htim);



typedef struct {
    float prevData;  // ��һ������
    float p;         // Э�������
    float q;         // ���ƹ�����������
    float r;         // ���Ʋ�����������
    float kGain;     // ����������
} KalmanFilter;

extern float DT35_distance[2];
void initKalmanFilter_1(KalmanFilter *filter, float initialP, float initialQ, float initialR);
void updateKalmanParams_1(KalmanFilter *filter, float newQ, float newR);
float kalmanFilter_1(KalmanFilter *filter, float inData);






#endif 